Micron Document
____ _ _ _ _
| _ \ ___ | |_ (_) _ __ ___ __| | (_) __ _
| |_) | / _ \ | __| | | | '_ \ / _ \ / _| | | | / _ |
| _ < | __/ | |_ | | | |_) | | __/ | (_| | | | | (_| |
|_| \_\ \___| \__| |_| | .__/ \___| \__,_| |_| \__,_|
|_|


The NomadNet German Wikipedia | Archives | Info
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b

πŸ” Search

Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―

Mach-O
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
Mach-O, fΓΌr Mach Object, beschreibt das Standard-BinΓ€rformat ausfΓΌhrbarer Programme, Bibliotheken und von SpeicherauszΓΌgen unter vielen MACH-basierten UNIX-Betriebssystemen wie beispielsweise OPENSTEP (ursprΓΌnglich NeXTStep), FreeBSD oder macOS (ursprΓΌnglich unter dem Namen Mac OS X).

Es wurde ab 1985 an der Carnegie Mellon University, kurz CMU, für das MACH-Betriebssystem entwickelt. Große Verbreitung hat es vor allem unter NeXTStep und dessen Weiterentwicklung macOS und darauf basierenden Apple-Systemen, wie iOS und iPadOS. Mit Universal Binaries, unter NeXTStep Multi-Architecture Binaries, wurde das Format zudem um Multi-Prozessorarchitektur-FÀhigkeit erweitert.

Contents

β€’ Aufbau
β€’ Header
β€’ Siehe auch
β€’ Weblinks

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Aufbau

Eine Mach-O-Datei besteht im Wesentlichen aus drei Teilen:cite-ref-1[1]

β€’ Kopfinformationen, englisch header

β€’ Magic
β€’ diverse Flags
β€’ Anzahl und Grâße der Load commands

β€’ Load commands

β€’ Metadaten
β€’ Offset-Addressen der Segmente

β€’ Segmente, segments

β€’ bis zu 255 Sektionen, sections

Header

Der Mach-Header ist ein 32 Bytes großer Bereich am Anfang einer 64-Bit-Mach-O-BinÀrdatei bzw. 28 Bytes bei 32-Bit-Mach-O. Der folgende Quelltext stammt aus osfmk/mach-o/loader.h von XNU, dem Kernel von macOS.cite-ref-2[2]

struct mach_header_64 {
uint32_t magic; /* mach magic number identifier */
cpu_type_t cputype; /* cpu specifier */
cpu_subtype_t cpusubtype; /* machine specifier */
uint32_t filetype; /* type of file */
uint32_t ncmds; /* number of load commands */
uint32_t sizeofcmds; /* the size of all the load commands */
uint32_t flags; /* flags */
uint32_t reserved; /* reserved (64-Bit only) */
};

Ein Beispiel fΓΌr einen Mach-Header aus einer beliebigen Programmdatei:cite-ref-3[3]

| Offset (hex) | LΓ€nge (dec) | Inhalt | Beispiel |
|---|---|---|---|
| 00 | 4 | mach magic number identifier | 0xCFFAEDFE β†’ MH_CIGAM_64 |
| 04 | 4 | CPU type | 0x01000007 β†’ CPU_TYPE_X86_64 = CPU_TYPE_I386 / CPU_ARCH_ABI64 |
| 08 | 4 | CPU subtype, machine specifier | 0x80000003 β†’ CPU_SUBTYPE_X86_ALL / CPU_SUBTYPE_LIB64 |
| 12 | 4 | Dateityp | 0x00000002 β†’ MH_EXECUTE |
| 16 | 4 | Anzahl der load commands | 0x00000010 |
| 20 | 4 | Grâße aller load commands | 0x00000510 bytes |
| 24 | 4 | Flags | 0x00200085 β†’ u. a. MH_DYLDLINK / MH_NOUNDEFS |
| 28 | 4 | reserviert (fehlt bei 32-Bit-Mach-O) | 0x00000000 |

Siehe auch
Weblinks

β€’ Harry Moulton: Mach-O File Format: Introduction. 3. Januar 2020; abgerufen am 22. November 2021 (englisch).

Einzelnachweise

cite-note-11. ↑ William Woodruff: Mach-O Internals. (PDF; 307 KB) 10. Februar 2016, S. 10; abgerufen am 14. Juli 2020 (englisch).
cite-note-22. ↑ Apple, Inc.: XNU Kernel Source. Abgerufen am 22. November 2021 (englisch).
cite-note-33. ↑ https://stackoverflow.com/questions/27669766/how-to-read-mach-o-header-from-object-file